package org.fastcatsearch.settings; import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.bind.JAXBException; import org.apache.commons.lang3.StringEscapeUtils; import org.fastcatsearch.settings.SearchPageSettings.SearchCategorySetting; import org.fastcatsearch.util.JAXBConfigs; import org.junit.Test; public class SearchPageSettingsTest { @Test public void testWrite() throws JAXBException { SearchPageSettings s = new SearchPageSettings(); List<SearchCategorySetting> searchCategorySettingList = new ArrayList<SearchCategorySetting>(); SearchCategorySetting cs = new SearchCategorySetting(); cs.setBodyField("<span>$body</span>"); searchCategorySettingList.add(cs); s.setSearchCategorySettingList(searchCategorySettingList); Writer writer = new StringWriter(); JAXBConfigs.writeRawConfig(writer, s, SearchPageSettings.class); System.out.println(writer.toString()); } @Test public void testRead() throws JAXBException { String data = "<span color=\"text-danger $id\">\n\n$body</span>"; System.out.println(">>>>" + data.replaceAll("\\$body",">>>>>")); String fieldIdPattern = "\\$[a-zA-Z_-]+"; Pattern patt = Pattern.compile(fieldIdPattern); Matcher matcher = patt.matcher(data); int i = 0; while(matcher.find()){ String g = matcher.group(); System.out.println(i++ + " > " + g.substring(1)); } data = StringEscapeUtils.escapeHtml4(data); String xml = "<search-page>" + "<search-category-list>" + " <search-category>" + " <body-field>" +data+ "</body-field>" + //" <body-field><span>$body</span></body-field>" + " </search-category>" + "</search-category-list>" + "<search-list-size>0</search-list-size>" + "<total-search-list-size>0</total-search-list-size>" + "</search-page>"; Reader reader = new StringReader(xml); SearchPageSettings searchPageSettings = JAXBConfigs.readConfig(reader, SearchPageSettings.class); for(SearchCategorySetting cs : searchPageSettings.getSearchCategorySettingList()){ System.out.println(cs.getBodyField()); } } }